package com.xd.core.api.service;


import com.xd.core.api.dto.*;
import com.xd.core.api.vo.CertificationSignUrlLinkVo;
import com.xd.core.api.vo.ContractInfoVo;
import com.xd.core.business.entity.Credit;
import com.xd.core.business.entity.IncomingCommonLoan;
import com.xd.core.business.entity.IncomingInfo;
import com.xd.core.business.entity.InsuranceCompanyInfo;
import com.xd.core.business.vo.RepaymentInsuranceSchedule;
import com.xd.core.h5.vo.AddSignerVo;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;

public interface ApiContractService {


    String companyAuthMobile3(Integer companyId);

    void verifyCaptcha(VerifyCaptchaDto verifyCaptchaDto);

    void authorizationToUse(Integer id);

    void contractNotifyUrl(QMHD qmhd) throws InterruptedException;

    void addSignerBDJKHT(Integer incomingId, String contractNo, IncomingInfo incomingInfo, Integer outId);

    void addSignerFLWSSDDZHT(Integer incomingId, String contractNo, IncomingInfo incomingInfo, Integer outId);

    void addSignerWTDKSQSHT(IncomingInfo incomingInfo, String contractNo, Integer outId);

    void addSignerWTTBHT(IncomingInfo incomingInfo, String contractNo, InsuranceCompanyInfo insuranceCompanyInfo, Integer outId);

    void addsignerTBSQS(IncomingInfo incomingInfo, String contractNo, Integer outId);

    void companyContractNotifyUrl(QMHD qmhd) throws InterruptedException;

    HashMap<String, String> borrowing(SignContractDto signContractDto);

    void guarantee(Credit credit, IncomingInfo incomingInfo, String dkcontractNo, String dbcontractNo, String Add, List<IncomingCommonLoan> incomingCommonLoans, SignContractDto signContractDto);

    void carmortgage(Integer id, String dkcontractNo, String dycontractNo, IncomingInfo incomingInfo, List<IncomingCommonLoan> incomingCommonLoans, BigDecimal outLoan, String Add, Integer outId);

    void roommortgage(Integer id, String dkcontractNo, String dycontractNo, IncomingInfo incomingInfo, List<IncomingCommonLoan> incomingCommonLoans, BigDecimal outLoan, String Add, Integer outId);

    String withhold(SignContractDto signContractDto, String dkContractNo);

    void assignmentOfDebt(Integer companyId);

    void extraBorrowing(Integer id, String Y2bank, String Y2BankCard,Integer outId, Credit credit);

    String repaymentCommitmentLetter(SignContractDto signContractDto, String dkContractNo);

    void assignmentOfDebtConfirmation(Integer debtId, Integer companyId);

    void zjhfxsm(Integer companyId);

    void dkjqzm(Integer outId);

    void wtdsf(Integer wtdsf);

    void zqzrtz(Integer debtId, Integer companyId);

    void contractCallbackUrl(QMHD qmhd);

    void companyContractCallback(QMHD qmhd);

    void resend(String serialNo);

    String getContract(String contractNo);

    void signContract(SignContractDto signContractDto);

    List<AddSignerVo> h5SignContract(Integer incomingId, String AmountDue, List<RepaymentInsuranceSchedule> repaymentInsuranceSchedules);

    HashMap<String, String> face(Integer incomingId, String token);

    boolean getCompanyIsAuth(String creditCode);

    HashMap<String, String> companyFace(Integer incomingId, String token);

    void addPersonalUser(Integer incomingId, String serialNo);
    void addCompany(Integer incomingId, String serialNo, String unifiedSocialCreditCode);

    String insuranceCompanyAuthMobile3(CompanyAuthMobile3Dto companyAuthMobile3Dto);

    void insuranceVerifyCaptcha(InsuranceVerifyCaptchaDto insuranceVerifyCaptchaDto);

    void addAllSigner(List<AddSignerVo> addSignerVos,Integer incomingId,Integer outId);

    boolean getCapitalCompanyIsAuth(String creditCode,Integer companyId);

    void notarizationContract(SignContractDto signContractDto);

    void notarizationRevocation(String orderNo);

    List<CertificationSignUrlLinkVo> getSignUrlLink(String orderNo);

    List<ContractInfoVo> getContractStatus(String contractNo);
}
